3000. Maximum Area of Longest Diagonal Rectangle
- 題目描述
- 解答
Description
You are given a 2D 0-indexed integer array dimensions.
For all indices i, 0 <= i < dimensions.length, dimensions[i][0] represents the length and dimensions[i][1] represents the width of the rectangle i.
Return the area of the rectangle having the longest diagonal. If there are multiple rectangles with the longest diagonal, return the area of the rectangle having the maximum area.
Example 1:
Input: dimensions = [[9,3],[8,6]]
Output: 48
Explanation:
For index = 0, length = 9 and width = 3. Diagonal length = sqrt(9 _ 9 + 3 _ 3) = sqrt(90) ≈ 9.487.
For index = 1, length = 8 and width = 6. Diagonal length = sqrt(8 _ 8 + 6 _ 6) = sqrt(100) = 10.
So, the rectangle at index 1 has a greater diagonal length therefore we return area = 8 * 6 = 48.
Example 2:
Input: dimensions = [[3,4],[4,3]]
Output: 12
Explanation: Length of diagonal is the same for both which is 5, so maximum area = 12.
Constraints:
1 <= dimensions.length <= 100dimensions[i].length == 21 <= dimensions[i][0], dimensions[i][1] <= 100
Solution
/**
* @param {number[][]} dimensions
* @return {number}
*/
var areaOfMaxDiagonal = function (dimensions) {
let maxRectangleDiagonal = 0;
let maxRectangleArea = 0;
for (let i = 0; i < dimensions.length; i++) {
const length = dimensions[i][0];
const width = dimensions[i][1];
const diagonal = length * length + width * width;
if (diagonal > maxRectangleDiagonal) {
maxRectangleDiagonal = diagonal;
maxRectangleArea = length * width;
}
if (diagonal === maxRectangleDiagonal) {
maxRectangleArea = Math.max(length * width, maxRectangleArea);
}
}
return maxRectangleArea;
};
解題思路
題目描述提到 dimensions[i][0] 會是矩形的長,然後 dimensions[i][1] 則是矩形的寬,需要 return 對角線最長的矩形的面積。如果有多個對角線最長的矩形,則傳回面積最大的矩形的面積。而矩形對角線則可以透過畢氏定理算出。
以題目給的 Example 1 dimensions = [[9,3],[8,6]] 為例子,
第一個矩形長 9 寬 3
- 對角線 X: + = , 所以 X =
- 面積:9 * 3 = 27
第二個矩形長 8 寬 6
- 對角線 X: + = , 所以 X =
- 面積:8 * 6 = 48
因為 > ,所以要回傳的是第一個矩形的面積 48。
把邏輯寫成程式就是答案了!需要注意的是可能不只兩組矩形,所以需要遍歷陣列。
心得
順便學到了怎麼用 markdown 寫數學運算符號,好耶!
- 平方
$x^2$: - 根號
$\sqrt{x}$: